package gui.usuarios;

import conexao.Http;
import conexao.HttpData;
import conexao.HttpListener;
import java.io.DataInputStream;
import java.io.IOException;
import javax.microedition.lcdui.*;
import recados.Recados;

public class Perfil extends Form implements CommandListener, HttpListener {

    private final String nome;
    private final Command cmdVoltar;
    private Http http;

    public Perfil(String nome) {
        super("Perfil de " + nome);
        this.nome = nome;

        cmdVoltar = new Command("Voltar", Command.BACK, 0);
        addCommand(cmdVoltar);
        setCommandListener(this);
    }

    public void fetch() {
        http = new Http(nome);
        HttpData dados = new HttpData();
        dados.setPagina("/ver_perfil.php");
        dados.put("nome", nome);
        
        http.setHttpData(dados);
        
        http.setListener(this);
        http.doPost(true);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == cmdVoltar) {
            http.cancela();
            Recados.getInstance().setCurrent(Recados.getInstance().getUsuarios());
        }
    }

    public void requisicaoConcluida(DataInputStream in) {
        String verifica = Http.readLine(in);

        if (verifica.indexOf("erro") > -1) {
            int num_erros = Integer.parseInt(verifica.substring(verifica.indexOf('-') + 1));
            int baixado = 0;

            StringBuffer erros = new StringBuffer(1);

            while (baixado < num_erros) {
                erros.append(Http.readLine(in)).append("\n");
                baixado++;
            }

            Recados.setCurrent(new Alert("Erro", erros.toString(), null, AlertType.ERROR), this);

            return;
        }

        String sexo = Http.readLine(in);
        String data_nas = Http.readLine(in);
        String idade = Http.readLine(in);

        append(new StringItem("Nome:", verifica));
        append(new StringItem("Sexo:", sexo));
        append(new StringItem("Aniversário:", data_nas));
        append(new StringItem("Idade:", idade));

        try {
            int tamanho_img = Integer.parseInt(Http.readLine(in));

            if (tamanho_img < 1) {
                insert(0, new StringItem(null, "Sem imagem"));
                return;
            }

            byte[] data = new byte[tamanho_img];

            in.readFully(data);

            Image img = Image.createImage(data, 0, tamanho_img);

            insert(0, new ImageItem(null, img, Item.LAYOUT_CENTER, nome));
        } catch (IOException ex) {
            Recados.setCurrent(new Alert("Erro", "Problema ao baixar imagem do perfil: " + ex.getMessage(), null, AlertType.ERROR),this);
        }
    }

    public void requisicaoCancelada() {
    }

    public void falhaRequisiçao(String mensagem) { 
        Recados.setCurrent(new Alert("Erro", mensagem, null, AlertType.ERROR),this);
    }
}
